#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7,V=1e6;
int q,l,r;
string s;
multiset<int>sl,sr,pl[N],pr[N];
int ans[N<<2],mx[N<<2],mn[N<<2];
void build(int id,int l,int r){
	mn[id]=V*10;
	mx[id]=-V*10;
	ans[id]=V*10;
	if(l==r)
		return;
	int mid=(l+r)>>1;
	build(id<<1,l,mid);
	build(id<<1|1,mid+1,r);
	return;
}
void upd(int id,int l,int r,int ps){
	if(l==r){
		ans[id]=V*10;
		if(pl[l].empty()){
			mn[id]=V*10; 
		}else{
			mn[id]=(*pl[l].begin()); 
		}
		if(pr[l].empty()){
			mx[id]=-V*10; 
		}else{
			mx[id]=-(*pr[r].begin()); 
		}
		return;
	}
	int mid=(l+r)>>1;
	if(ps<=mid)upd(id<<1,l,mid,ps);
	else upd(id<<1|1,mid+1,r,ps);
	ans[id]=min({ans[id<<1],ans[id<<1|1],mn[id<<1|1]-mx[id<<1]+1});
	mn[id]=min(mn[id<<1],mn[id<<1|1]);
	mx[id]=max(mx[id<<1],mx[id<<1|1]);
	return;
}
signed main(){
	freopen("stone.in","r",stdin);
	freopen("stone.out","w",stdout); 
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>q;
	build(1,0,V);
	while(q--){
		cin>>s>>l>>r;
		r--;
		if(s=="A"){
			sl.insert(-l);
			sr.insert(r);
			pl[l].insert(r);
			pr[r].insert(-l);
		}else{
			sl.erase(sl.lower_bound(-l));
			sr.erase(sr.lower_bound(r));
			pl[l].erase(pl[l].lower_bound(r));
			pr[r].erase(pr[r].lower_bound(-l));
		}
		upd(1,0,V,l);
		upd(1,0,V,r);
		int maxl=-(*sl.begin()),minr=(*sr.begin());
		if(minr<maxl){
			cout<<ans[1]<<"\n"; 
		}else{
			cout<<(*pl[maxl].begin())+(*pr[minr].begin())+1<<"\n";
		}
	}
	return 0;
}
